﻿/*************************************************************************************
* 运行库版本：	4.0.30319.18408
* 类  名  称：	EventArgExtensions
* 命 名 空间：	FutureTech
* 文  件  名：	EventArgExtensions
* 创 建 时间：	2014/3/23 22:56:09
* 作      者：	帅红  shuaihong617@qq.com
* 说      明：
* 修 改 时间：
* 修  改  人：
*************************************************************************************/

using System;
using System.Threading;

namespace FutureTech
{
        /// <summary>
        ///         EventArgs Extensions
        /// </summary>
        public static class EventArgsExtensions
        {
                /// <summary>
                ///         Raises the specified decimal.
                /// </summary>
                /// <typeparam name="TEventArgs">The type of the event arguments.</typeparam>
                /// <param name="e">The decimal.</param>
                /// <param name="sender">The sender.</param>
                /// <param name="eventDelegate">The event delegate.</param>
                public static void Raise<TEventArgs>(this TEventArgs e, Object sender,
                                                     ref EventHandler<TEventArgs> eventDelegate)
                        where TEventArgs : EventArgs
                {
                        EventHandler<TEventArgs> temp = Interlocked.CompareExchange(ref eventDelegate, null, null);
                        if (temp != null)
                        {
                                temp(sender, e);
                        }
                }
        }
}